printing: Fail nicely when /tmp is not writable
authorMarek Kasik <mkasik@redhat.com>
Fri, 14 Mar 2014 14:36:10 +0000 (15:36 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 17 Mar 2014 18:37:34 +0000 (14:37 -0400)
Don't crash when /tmp is not writable when printing to file.
Show that getting of printer details failed for CUPS printers.

https://bugzilla.gnome.org/show_bug.cgi?id=693200

gtk/gtkprintjob.c
gtk/gtkprintoperation-unix.c
gtk/gtkprintunixdialog.c
modules/printbackends/cups/gtkprintbackendcups.c

index d31b7dc061db9bf29066b4adc871ceefcbb17033..05772ad6f2f8495c525494f8ef89e123074b0fed 100644 (file)
@@ -473,7 +473,7 @@ gtk_print_job_get_surface (GtkPrintJob  *job,
                           GError      **error)
 {
   GtkPrintJobPrivate *priv;
-  gchar *filename;
+  gchar *filename = NULL;
   gdouble width, height;
   GtkPaperSize *paper_size;
   int fd;
index ebf2a4d30f7402b07d41ae66b3c33abafcf3d0ac..1e17b0f83147b6752ed948308da9eb6e0b5b235b 100644 (file)
@@ -135,8 +135,9 @@ op_unix_free (GtkPrintOperationUnix *op_unix)
 {
   if (op_unix->job)
     {
-      g_signal_handler_disconnect (op_unix->job,
-                                  op_unix->job_status_changed_tag);
+      if (op_unix->job_status_changed_tag > 0)
+        g_signal_handler_disconnect (op_unix->job,
+                                    op_unix->job_status_changed_tag);
       g_object_unref (op_unix->job);
     }
 
index 6fd82bf99920e6ffad632d58b33a4f343fbc00c7..4761878b4aa77f0fe13d8b1573cfce85c16f8624 100644 (file)
@@ -2044,12 +2044,12 @@ selected_printer_changed (GtkTreeSelection   *selection,
                           G_CALLBACK (printer_details_acquired), dialog);
       /* take the reference */
       priv->request_details_printer = printer;
-      gtk_printer_request_details (printer);
       set_busy_cursor (dialog, TRUE);
       gtk_list_store_set (GTK_LIST_STORE (priv->printer_list),
                           g_object_get_data (G_OBJECT (printer), "gtk-print-tree-iter"),
                           PRINTER_LIST_COL_STATE, _("Getting printer information…"),
                           -1);
+      gtk_printer_request_details (printer);
       return;
     }
 
index 36e7f0fb78a13bebff3ff2829fc23f186b36d436..5716e48b5b3f5f00fd8844953d9d7a14c8865880 100644 (file)
@@ -3489,7 +3489,7 @@ cups_request_ppd (GtkPrinter *printer)
   GtkPrintBackend *print_backend;
   GtkPrinterCups *cups_printer;
   GtkCupsRequest *request;
-  char *ppd_filename;
+  char *ppd_filename = NULL;
   gchar *resource;
   http_t *http;
   GetPPDData *data;